package com.cenntro.oss.model.vo;

import java.math.BigDecimal;
import java.util.Date;

import com.cenntro.common.util.BigDecimalUtil;
import com.cenntro.common.util.NumUtil;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

@Data
@Accessors(chain = true)
//@EqualsAndHashCode(callSuper=true)
public class VehicleDetailVO {
	
	private Integer devId;
    /*******************************************************************dev_static */
    /** IMEI */
	@ApiModelProperty(value="imei")
    private String imei;
	@ApiModelProperty(value="车辆备注名")   /** 车辆备注名 */
    private String carNickName;
	@ApiModelProperty(value="车架号 ")   /** 车架号  */
    private String carNub;
	@ApiModelProperty(value="车牌")   /** 车牌 */
    private String carNo;

	@ApiModelProperty(value="购买时间")   /** 购买时间 */
    private Date buyTime;
	@ApiModelProperty(value=" 出厂日期 ")   /** 入库日期 */
    private Date buildTime;
	@ApiModelProperty(value=" 销售区域 ")  
	private String saleArea;
	@ApiModelProperty(value=" 销售城市 ")  
	private String saleCity;
	@ApiModelProperty(value=" 销售国家")  
	private String saleCountry;
	@ApiModelProperty(value=" 颜色 ")  
	private String color;
	@ApiModelProperty(value=" 发货时间 ")
	private Date sendTime;
	@ApiModelProperty(value=" 配件名称 ")
	private String parts;
	
	
	@ApiModelProperty(value=" 车辆序列号 ")
	private String devSn;
	@ApiModelProperty(value=" 电机编号 ")
	private String bmsNo;
	@ApiModelProperty(value=" TBOX-IMEI ")
	private String tbox;
	@ApiModelProperty(value=" 环保清单编号 ")
	private String greenListNum;
	
	@ApiModelProperty(value=" 备注 ")
	private String remarks;
	
	@ApiModelProperty(value="车架号 ")
	private String vin;
	
	
    /*******************************************************************dev_online */
	@ApiModelProperty(value="最近上报时间")   /** 最近上报时间 */
    private Date lastUpTime;
	@ApiModelProperty(value="点火状态 0 熄火   1 点火")   /** 0 熄火   1 点火 */
    private Integer fire;
	@ApiModelProperty(value="门状态：00：两门开、02：左门开，04：右门开，06：门关但未锁，07：门已锁")   /** 门状态：00：两门开、02：左门开，04：右门开，06：门关但未锁，07：门已锁 */
    private Integer door;
	@ApiModelProperty(value="当前速度 km/小时")   /**当前速度 */
    private Double speed;
	@ApiModelProperty(value="坐标经度(百度坐标）")   /**坐标经度(百度坐标） */
    private String lat;
	@ApiModelProperty(value="坐标纬度(百度坐标）")   /**坐标经度(百度坐标） */
    private String lng;
	@ApiModelProperty(value="所在城市")   /**所在城市*/
    private String city;
	@ApiModelProperty(value="所在位置 ")   /**所在位置 */
    private String address;
	@ApiModelProperty(value="剩余电量 ")   /**电量 */
    private Integer battery;
	//@ApiModelProperty(value="电机状态   0 未启动     1启动")   /**电机状态   0 未启动     1启动*/
    private Integer bms;
    @ApiModelProperty(value="方向")   /**方向*/
    private Double toDir;
    @ApiModelProperty(value="当前总里程")   /**当前总里程*/
    private Double farAway; 
    @ApiModelProperty(value="0=已离线，  1=在线中， 2=行驶中, 3=充电中，4=启动中")   /**0=已离线，  1=在线中， 2=行驶中, 3=充电中，4=启动中*/
    private Integer deviceStatus;
    /*******************************************************************devCar */
    @ApiModelProperty(value="车型名称 ")   /**车型名称 */
    private String carType;
    @ApiModelProperty(value="充满电需时长：整数，单位分种")   /**充满电需时长 */
    private Integer chargeLong;
    @ApiModelProperty(value="体积")   /**体积*/
    private Double volume;
    @ApiModelProperty(value="车身长度：单位米")   /** 车身长度：单位米*/
    private Double length; 
    @ApiModelProperty(value="车型  箱式")   /**  车型  箱式*/
    private String models;
    @ApiModelProperty(value="装载长度：单位米")   /** 装载长度：单位米*/
    private Double loadLength;
    @ApiModelProperty(value="装载高度：单位米")   /**装载高度：单位米*/
    private Double loadHeight;
    @ApiModelProperty(value="电机功率KW")   /** 电机功率KW*/
    private Integer power;
    @ApiModelProperty(value="电池容量 单位kWh")   /** 电池容量 单位kWh*/
    private Double batteryCapacity;
    @ApiModelProperty(value="总续航里程")   /**续航里程 (havekm)*/
    private Integer life;
    @ApiModelProperty(value="预计充满时间")
    private Integer longIsFull;
    @ApiModelProperty(value="预计充满时间")
    private String longIsFullStr;
	/*******************************************************************sys_agent*/
    @ApiModelProperty(value="运营商企业Id")   /** 运营商企业Id*/
    private Integer agentId;
    @ApiModelProperty(value="运营商企业")   /** 运营商企业*/
    private String company;
    @ApiModelProperty(value="企业联系人")   /** 企业联系人*/
    private String linkTel;
    
    /******************************************************************dev_assembly_plant*/
    @ApiModelProperty(value="总装厂名称")   /**总装厂*/
    private String dapName;
    @ApiModelProperty(value="产地")   
    private String dapCity;
    
    
    /******************************************************************dev_bom_car*/
    @ApiModelProperty(value="bom版本号")  
    private String bomVersion;
    @ApiModelProperty(value="bomid")  
    private Integer bomId;
    
    
    /*****************************************************************************/
    @ApiModelProperty(value="续航里程")   /**续航里程 (havekm)*/
    private Double rechargeMileage;
    @ApiModelProperty(value="百公里能耗")  
    private Object consum100km;
    
    
    
    public Double getRechargeMileage(){
    	BigDecimal mil = BigDecimalUtil.multi(life, battery, 0.01).divide(BigDecimalUtil.getBigDecimal(5));
    	double dd = BigDecimalUtil.setscale(mil, 1, BigDecimal.ROUND_UP).doubleValue();
    	return dd < 0 ? 0 : dd;
    }

	public Integer getLongIsFull() {
		return BigDecimalUtil.multi(100 - NumUtil.toInt(this.battery), NumUtil.toInt(this.chargeLong), 0.01).intValue();
	}
	
	public String getLongIsFullStr() {
		 int min = BigDecimalUtil.multi(100 - NumUtil.toInt(this.battery), NumUtil.toInt(this.chargeLong), 0.01).intValue();
		 int hour = 0;
		 if (min >= 60){
			 hour = min/60;
			 min =  min%60;
		 }
		 
		 return hour + "小时" + min + "分钟";
	}
    /**
     * recharge mileage  续航里程
     */

}
